/*
 * 代号：凤凰
 * http://www.jphenix.org
 * 2024-08-17
 * V4.0
 */
package com.jphenix.servlet.spring;

import java.util.Map;

import com.jphenix.kernel.objectloader.interfaceclass.IBeanFactory;
import com.jphenix.servlet.filter.BaseFilter;
import com.jphenix.standard.docs.BeanInfo;
import com.jphenix.standard.docs.ClassInfo;
import com.jphenix.standard.docs.Running;
import com.jphenix.standard.script.IScriptLoader;

/**
 * 与Spring互动的主接口
 * com.jphenix.servlet.spring.JPhenixSpring
 */
@BeanInfo({"jphenixspring"})
@Running({"1"})
@ClassInfo({"2024-08-17 20:45","与Spring互动的主接口"})
public interface JPhenixSpring {

	/**
	 * 获取当前框架的主过滤器实例
	 * @return 当前框架的主过滤器实例
	 */
	BaseFilter getFilter();
	
	/**
	 * 获取当前框架的基础类加载器实例
	 * @return 当前框架的基础类加载器实例
	 */
	IBeanFactory getBeanFactory();
	
	/**
	 * 获取当前架构中的脚本加载器实例
	 * @return 当前架构中的脚本加载器实例
	 */
	IScriptLoader getScriptLoader();
	
	/**
	 * 调用目标脚本并获取返回值
	 * @param scriptId    脚本代码
	 * @param invoker     调用者（通常传入this，用于排查问题）
	 * @return            调用结果
	 */
	Object call(String scriptId,Object invoker);
	
	/**
	 * 调用目标脚本并获取返回值
	 * @param scriptId    脚本代码
	 * @param paraMap     入参容器（具体入参，见对应脚本配置）
	 * @param invoker     调用者（通常传入this，用于排查问题）
	 * @return            调用结果
	 * @throws Exception  异常
	 */
	Object call(String scriptId,Map<String,?> paraMap,Object invoker);
}





